package cn.ztf.zshop.sys.controller;

import cn.ztf.zshop.sys.dto.SysDeptDto;
import cn.ztf.zshop.sys.service.SysDeptService;
import cn.ztf.zshop.sys.vo.SysDeptVo;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sys/dept")
@RequiredArgsConstructor
public class SysDeptController {

    private final SysDeptService sysDeptService;

    /**
     * 部门树查询
     * @return
     */
    @GetMapping("/deptTree")
    public ResponseEntity<List<SysDeptVo>> listTree() {
        List<SysDeptVo> sysDeptVos = sysDeptService.listTree();
        return ResponseEntity.ok(sysDeptVos);
    }


    /**
     * 根据部门id查询部门信息
     * @param deptId
     * @return
     */
    @GetMapping("{deptId}")
    public ResponseEntity<SysDeptVo> get(@PathVariable Long deptId) {
        SysDeptVo sysDeptVo = sysDeptService.getSysDeptById(deptId);
        return ResponseEntity.ok(sysDeptVo);
    }

    /**
     * 新增部门
     * @param sysDeptDto
     * @return
     */
    @PostMapping
    public ResponseEntity<Void> create(@Validated @RequestBody SysDeptDto sysDeptDto){
        sysDeptService.create(sysDeptDto);
        return ResponseEntity.ok().build();
    }

    /**
     * 修改部门信息
     * @param sysDeptDto
     * @return
     */
    @PutMapping
    public ResponseEntity<Void> update(@Validated(SysDeptDto.Update.class) @RequestBody SysDeptDto sysDeptDto){
        sysDeptService.updateDept(sysDeptDto);
        return ResponseEntity.ok().build();
    }


    /**
     * 根据id删除部门
     * @param deptId
     * @return
     */
    @DeleteMapping("{deptId}")
    public ResponseEntity<Void> delete(@PathVariable Long deptId){
        sysDeptService.delete(deptId);
        return ResponseEntity.ok().build();
    }

//    /**
//     * 根据部门id查询用户列表
//     */
//    @GetMapping("/userList/{deptId}")
//    public ResponseEntity<List<SysDeptVo>> userList(@PathVariable Long deptId){
//        List<SysDeptVo> sysDeptVos = sysDeptService.userList(deptId);
//        return ResponseEntity.ok(sysDeptVos);
//    }

}
